package com.cy.util;

import java.security.MessageDigest;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Md5Util {
		
	private final static String[] hexDigits = {
		"0", "1", "2", "3", "4", "5", "6", "7",
		"8", "9", "a", "b", "c", "d", "e", "f"}; 

	public static String byteArrayToHexString(byte[] b) { 
		StringBuffer resultSb = new StringBuffer(); 
		for (int i = 0; i < b.length; i++) { 
			 resultSb.append(byteToHexString(b[i])); 
		} 
		return resultSb.toString(); 
	}
	
	private static String byteToHexString(byte b) { 
		int n = b; 
		if (n < 0) n = 256 + n; 
		int d1 = n / 16; 
		int d2 = n % 16; 
		return hexDigits[d1] + hexDigits[d2]; 
	} 	
	
	/**
	 * md5加密算法
	 * @param origin
	 * @return
	 */
	public static String MD5Encode(String origin) { 
		String resultString = null; 
	    try { 
	    	resultString=new String(origin); 
		    MessageDigest md = MessageDigest.getInstance("MD5"); 
		    resultString=byteArrayToHexString(md.digest(resultString.getBytes())); 
		}catch (Exception ex) { 
			
		} 
		return resultString; 
	}
	
	/**
	 * 正则表达式处理
	 * @param str
	 * @return
	 */
	public static String reHandle(String str){
		Pattern p = Pattern.compile("[^0-9a-zA-Z\u4e00-\u9fa5]");
		Matcher matcher = p.matcher(str);
		String newStr = matcher.replaceAll("");
		return newStr;
	}	
}
